【忆芯技术分享】大道至简:Chisel如何用高级语言进行硬件设计
1
Chisel诞生史
Chisel首先诞生于学界,加州大学伯克利分校的研究团队为了在研究中获得更快的反馈发明了这一语言。据团队成员之一Krste Asanovic教授介绍,早在30多年前还没有硬件描述语言的时候,他们就已经开始构想这样一种语言了。很快,工业界意识到,Chisel并不同于其他“学术界的玩具”,它能有效提高研发的效率,为工业带来进步。时至今日,一些项目已经选择使用Chisel替代Verilog,著名的RISC-V指令集CPU “香山”就使用Chisel进行开发,并成功流片。
2
Chisel如何进行设计
Chisel是一种HDL,自身就可以综合成唯一电路。但是,为了让更多的开发者愿意参与进来,Chisel对Verilog做了妥协。Chisel的编译过程如下图所示,代码首先通过Chisel编译器生成AST中间数据,然后经过Firrtl编译器,将AST数据转换成标准Firrtl代码,最后通过Firrtl编译器将Firrtl转换成Verilog代码。
图1.Tool flow of the Chisel ecosystem(引自Chisel Documentation)
3
Chisel如何进行验证
4
Chisel实例
图2. LED blink(引自Chisel/FIRRTL Hardware Compiler Framework)
图3. LED blink Verilog(引自Chisel/FIRRTL Hardware Compiler Framework)
5
技术永远在进步,忆芯永远在路上
忆芯科技是一家以技术为核心的芯片公司,始终关注并推动着技术的革新。忆芯科技已经流片的STAR2000,是一颗高性能企业级SSD主控芯片。在STAR2000中,一些复杂模块已经引入Chisel进行开发。
线性反馈移位寄存器(LFSR)是一种生成伪随机序列的方案。LFSR初始化时,需要n个真随机值 bn bn-1 … b2 b1 和一个n阶本源多项式 f(x)= Xn+anXn-1+an-1Xn-2… a2X+ a1 。接下来每个cycle都将 b1 作为伪随机值输出,并将bn bn-1 … b2 右移一位,同时计算新的bn= anbn+ an-1bn-1 +…+ a2b2 + a1b1 。在每n个cycle内,需要使用一个真随机数对bn进行加扰,以保证整个随机系统的安全性。
图4. LFSR(引自 高速伪随机数发生器的设计与实现)
图5. LFSR Chisel代码
图6. STAR_LFSR设计方案
图7. STAR_LFSR设计方案
图8. STAR_LFSR Chisel代码
著名作家、大思想家斯宾塞·约翰逊曾经说过“唯一不变的是变化本身”。技术的发展永远不会止步。对科技公司来说,技术是立足之本,固步自封只会被时代的洪流淹没,只有积极拥抱变化、不断推动技术发展,才能在瞬息万变的市场中长青不朽。
忆芯科技
核心职位火热招聘中
扫描二维码了解更多信息
推荐阅读
初赛报名倒计时!忆芯国产平台动作识别挑战赛13万奖金池等你来赢取!
8-30
8-29
8-25
忆芯科技
北京忆芯科技有限公司成立于2015年底,作为国内较早从事高性能固态硬盘主控芯片研发的企业,致力于成为赋能大数据应用的芯片全球领导者。经过7年的发展,公司已成长为国内领先的高端PCIe SSD主控芯片和成品盘供应商,为各行业的信息化发展提供高质量芯片级底层保障,业务方向覆盖消费级、工业级和企业级,主控芯片及解决方案。
忆芯科技核心成员具有多年研发经验和多项研发成果,拥有从底层算法到芯片设计,再到解决方案设计等多方面的丰富经验。在坚持自主研发基础上,研发的芯片产品拥有260余项自主知识产权,并创新性地将处理器架构首次引入存储领域;现已成功完成4款高端消费级、企业级SSD主控芯片流片,所研发的高性能低功耗NVMe SSD主控已量产出货。公司总部位于北京,在上海、成都、合肥、厦门、深圳分别设有研发中心和客户技术支持中心。